package com.guigu.youxuan.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.guigu.youxuan.common.utils.PageUtils;
import com.guigu.youxuan.pojo.OrderInfo;
import com.guigu.youxuan.pojo.dto.OrderInfoDto;
import com.guigu.youxuan.pojo.dto.OrderMakeDto;
import com.guigu.youxuan.pojo.dto.OrderByMidDto;
import com.guigu.youxuan.pojo.dto.OrderMerchantDto;
import com.guigu.youxuan.pojo.dto.SysUnpaidOrderDto;
import com.guigu.youxuan.common.utils.PageUtils;
import com.guigu.youxuan.common.vo.OrderSearchVo;
import com.guigu.youxuan.pojo.OrderInfo;
import com.guigu.youxuan.pojo.dto.OrderDto;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author liweixin
 * @since 2024-05-15
 */
public interface IOrderInfoService extends IService<OrderInfo> {
    /**
     * 供应商订单分页查询订单信息
     * @param currentPage
     * @param pageSize
     * @return
     */
    PageInfo<OrderInfo> SupplierOrderListPage(int currentPage, int pageSize);

    /**
     * 用户个人中心分页查询待支付订单信息
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<SysUnpaidOrderDto> AwaitOrderListPage(String sysUsersId, int pageNo, int pageSize);

    /**
     * 用户个人中心分页查询待提货订单信息
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<SysUnpaidOrderDto> AwaitPickUpGoods(String sysUsersId,int pageNo, int pageSize);

    /**
     * 用户个人中心分页查询已提货订单信息
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<SysUnpaidOrderDto> PickUpGoods(String sysUsersId, int pageNo, int pageSize);


    /**
     * 商户管理的全部订单查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<OrderMerchantDto> AllMerchantHubListPage(int pageNo, int pageSize,String sysUsersId,OrderMerchantDto orderMerchantDto);

    PageUtils<OrderDto> getOrderList(int currentPage, int pageSize, OrderSearchVo vo);

    /**
     * 商户管理的待收货订单查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<OrderMerchantDto> PendingOrdersListPage(int pageNo, int pageSize, String sysUsersId, OrderMerchantDto orderMerchantDto);


    /**
     * 商户管理的待提货订单查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<OrderMerchantDto> StayTakeOrdersListPage(int pageNo, int pageSize, String sysUsersId, OrderMerchantDto orderMerchantDto);

    /**
     * 商户管理的已提货订单查询
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageInfo<OrderMerchantDto> AlreadyTakeDeliveryOrdersListPage(int pageNo, int pageSize, String sysUsersId, OrderMerchantDto orderMerchantDto);


    PageUtils<OrderInfoDto> UnpaidOrderListPage2(String sysUsersId, int pageNo, int pageSize);

    /**
     * 获取最大的订单编号
     * @return
     */
    String getOrderNumber();

    void createOrder(OrderMakeDto dto, OrderInfo orderInfo);

    PageUtils<OrderByMidDto> getOrderByMid(int currentPage, int pageSize, OrderSearchVo vo);
}
